// miniprogram/pages/replacemodify/replace5_ward/ward.js
const db=wx.cloud.database();
const _ = db.command;
//时间转换函数
import common from "../../../utils/getMyData.js";

Page({

  /**
   * 页面的初始数据
   */
  data: {
    //交班日期选择器
    show_ward_time:false,
    gender_ward_time:'',
    currentDate_ward_time: new Date().getTime(),
    maxDate_ward_time: new Date().getTime(),
    minDate_ward_time: new Date().getTime(),
    formatter(type, value) {
      if (type === 'year') {
        return `${value}年`;
      } else if (type === 'month') {
        return `${value}月`;
      }
      return value;
    },

    //下拉框显示
    ss_value:"",  //自动输入需要确定的value
    ss_bed:"",ss_sex:"",ss_age:"",ss_situation:"",//需要自动输入的值
    getPatientIdToWard:"",

    //总体情况数据
    ward_patient_number:"",

    //下拉框
    //总体情况
    option5: [
      { text: '病人姓名', value: 0 },
    ],
    value5: 0,


    //总体情况页面
    ward_turnbed:"",
    ward_turnbed_again:"",
    ward_add_bed:"",
    // ward_bef_A:"",
    // ward_bef_B:"",
    // ward_bef_AB:"",
    // ward_bef_O:"",
    // ward_wait_A:"",
    // ward_wait_B:"",
    // ward_wait_AB:"",
    // ward_wait_O:"",
    //值班表页面
    sche_group:"",
    sche_chief:"",
    sche_deputy_chief:"",
    sche_attend_doc:"",
    sche_resi_doc:"",
    sche_rota_doc:"",
    sche_desc:""
  },

  //输入框回调
  onChange(e) {
    //输入框
    console.log(e.detail);   
    this.setData({
      //因为按钮处要进行wx:if判断，所以要将所有输入框的数据声明
      [e.target.dataset.key]:e.detail
    })
    console.log(this.data)
  },
    //总体情况今日手术手术名称输入框（结合添加更多）
    onChange_ward_operdes(e) {
      //输入框
      console.log(e.detail);   
      this.setData({
        //因为按钮处要进行wx:if判断，所以要将所有输入框的数据声明
        [e.target.dataset.key]:e.detail
      })
      //获取ward_oper的des属性并改变数组（结合添加更多）
      this.data.ward_oper[e.currentTarget.dataset.index].des=e.detail
      this.setData({
        ward_oper:this.data.ward_oper
      })
    },
  //总体情况拟住院约床输入框（结合添加更多）
  onChange_ward_bed_appoint(e) {
    //输入框
    console.log(e.detail);   
    this.setData({
      //因为按钮处要进行wx:if判断，所以要将所有输入框的数据声明
      [e.target.dataset.key]:e.detail
    })
    //获取ward_oper的des属性并改变数组（结合添加更多）
    this.data.ward_bed_appoint[e.currentTarget.dataset.index]=e.detail
    this.setData({
      ward_bed_appoint:this.data.ward_bed_appoint
    })
  },
  //总体情况900医院输入框（结合添加更多）
  onChange_ward_others_hos(e) {
    //输入框
    console.log(e.detail);   
    this.setData({
      //因为按钮处要进行wx:if判断，所以要将所有输入框的数据声明
      [e.target.dataset.key]:e.detail
    })
    //获取ward_oper的des属性并改变数组（结合添加更多）
    this.data.ward_others_hos[e.currentTarget.dataset.index]=e.detail
    this.setData({
      ward_others_hos:this.data.ward_others_hos
    })
  },

  //提交表单添加进数据库
  btnSub_ward(res){
    var {ward_turnbed,ward_turnbed_again,ward_add_bed}=res.detail.value
    //,ward_bef_A,ward_bef_B,ward_bef_AB,ward_bef_O,ward_wait_A,ward_wait_B,ward_wait_AB,ward_wait_O
     //进入加载页面
     wx.showLoading({
      title: '加载中...',
      mask: true
      })
      setTimeout(function () {
        wx.hideLoading()
      }, 2000)
    
    //在本地改patient表中病人手术
    //今日手术修改patient表所需的变量，ward_patientid[]根据病人姓名查到_id，ward_patient_oper_list[i]将加好了的数组存到数组
    var ward_patientid=[]
    var ward_patient_oper_list=[]
    var j=0
    for(var i=0;i<this.data.ward_oper.length;i++){
      db.collection('patient').where({
        patient_name:this.data.ward_oper[i].name
      }).get().then(res=>{
        ward_patientid.push(res.data[0]._id)
        ward_patient_oper_list.push(res.data[0].patient_oper_list)
        ward_patient_oper_list[j].push({"name":this.data.ward_oper[j].des,"time":new Date(this.data.ward_time)})
      }).then(res=>{
          db.collection('patient').doc(ward_patientid[j]).update({
              data:{
                patient_oper_list:ward_patient_oper_list[j]
              }
          })
          j++
      })
    }
    
    wx.cloud.callFunction({
      name:"newAdd",
      data:{
        action:'ward',
        ward_turnbed:ward_turnbed,
        ward_turnbed_again:ward_turnbed_again,
        ward_add_bed:ward_add_bed,
        ward_bef_A:this.data.ward_bef_A,
        ward_bef_B:this.data.ward_bef_B,
        ward_bef_AB:this.data.ward_bef_AB,
        ward_bef_O:this.data.ward_bef_O,
        ward_wait_A:this.data.ward_wait_A,
        ward_wait_B:this.data.ward_wait_B,
        ward_wait_AB:this.data.ward_wait_AB,
        ward_wait_O:this.data.ward_wait_O,
        ward_oper:this.data.ward_oper,
        ward_bed_appoint:this.data.ward_bed_appoint,
        ward_others_hos:this.data.ward_bed_appoint,
        ward_time:this.data.ward_time,
        ward_lastid:this.data.ward_lastid,
      }
    }).then(res=>{
      console.log(res)
      //清除填写内容
      this.setData({
        //清空value
        value:"",
        message:"",
        //清空值
        ward_turnbed:"",
        ward_turnbed_again:"",
        ward_add_bed:"",
        // ward_bef_A:"",
        // ward_bef_B:"",
        // ward_bef_AB:"",
        // ward_bef_O:"",
        // ward_wait_A:"",
        // ward_wait_B:"",
        // ward_wait_AB:"",
        // ward_wait_O:""
        ward_oper:[],
        value5:0,
        ward_bed_appoint:"",
        ward_others_hos:""
      })
        //交班日期要查数据库
        db.collection("ward").where({
          ward_submit:false
        }).get().then(res=>{
          if(res.data[0].ward_time.getTime()>new Date().getTime()){
            this.setData({
            minDate_ward_time:res.data[0].ward_time.getTime(),
            ward_time:res.data[0].ward_time.getTime(),
            gender_ward_time:"",
            ward_lastid:res.data[0]._id
          })
          }else{
            this.setData({
              minDate_ward_time:res.data[0].ward_time.getTime(),
              ward_time:res.data[0].ward_time.getTime(),
              gender_ward_time:common.getMyData(res.data[0].ward_time.getTime(),'Y-m-d'),
              ward_lastid:res.data[0]._id
            })
          }
        })
          this.setData({
            minDate_ward_time:this.data.minDate_ward_time,
            ward_time:this.data.ward_time,
            gender_ward_time:this.data.gender_ward_time,
            ward_lastid:this.data.ward_lastid
          })
    })
  },

  //总体情况页面手术日期时间选择器
  showPopup_ward_time(e){      //点击选择性别，打开弹出层（选择器）
    this.setData({
      //columns_opertime: ['A','B','AB','O'],   //选择器中的值
      show_ward_time:true,
      minDate_ward_time:this.data.minDate_ward_time
    })
  },
  onClose_ward_time() {     //点击空白处开闭弹出层（选择器）及选择器左上角的取消
    this.setData({ show_ward_time: false });
  },
  onConfirm_ward_time(e){    //选择器右上角的确定，点击确定获取值
    this.setData({
      gender_ward_time:common.getMyData(e.detail,'Y-m-d'),
      ward_time:e.detail,
      show_ward_time:false,
    })
    console.log(e.detail)
  },
  onInput_ward_time(event) {
    this.setData({
      currentDate_ward_time: event.detail,
    });
  },

  //从patient数据库获取病人姓名给总体情况（结合添加更多）
  getPatientToWard(){
    db.collection("patient").where({
      patient_del:false
    }).get().then(res=>{
      this.setData({
        getPatientIdToWard:res.data
      })
      for(var i=0;i<res.data.length;i++){
        this.data.option5[i+1]={ text: res.data[i].patient_name, value: i+1 }
      }
      this.setData({
        option5:this.data.option5
      })
    })
  },
  //获取ward_oper的name属性并改变数组（结合添加更多）
  getValue_ward_opername(res){
    this.data.ward_oper[res.currentTarget.dataset.index].name=this.data.option5[res.detail].text
    this.setData({
      ward_oper:this.data.ward_oper
    })
  },
    //总体情况页面手术日期时间选择器
  showPopup_ward_time(e){      //点击选择性别，打开弹出层（选择器）
    this.setData({
      //columns_opertime: ['A','B','AB','O'],   //选择器中的值
      show_ward_time:true,
      minDate_ward_time:this.data.minDate_ward_time
    })
  },
  onClose_ward_time() {     //点击空白处开闭弹出层（选择器）及选择器左上角的取消
    this.setData({ show_ward_time: false });
  },
  onConfirm_ward_time(e){    //选择器右上角的确定，点击确定获取值
    this.setData({
      gender_ward_time:common.getMyData(e.detail,'Y-m-d'),
      ward_time:e.detail,
      show_ward_time:false,
    })
    console.log(e.detail)
  },
  onInput_ward_time(event) {
    this.setData({
      currentDate_ward_time: event.detail,
    });
  },

  //从patient数据库获取病人姓名给总体情况（结合添加更多）
  getPatientToWard(){
    db.collection("patient").where({
      patient_del:false
    }).get().then(res=>{
      this.setData({
        getPatientIdToWard:res.data
      })
      for(var i=0;i<res.data.length;i++){
        this.data.option5[i+1]={ text: res.data[i].patient_name, value: i+1 }
      }
      this.setData({
        option5:this.data.option5
      })
    })
  },
  //获取ward_oper的name属性并改变数组（结合添加更多）
  getValue_ward_opername(res){
    this.data.ward_oper[res.currentTarget.dataset.index].name=this.data.option5[res.detail].text
    this.setData({
      ward_oper:this.data.ward_oper
    })
  },

  //添加更多的显示
  ward_oper_show(res){
    this.data.ward_oper.push({"des":"","name":""})
    this.setData({
      ward_oper:this.data.ward_oper
    })
  },
  ward_bed_appoint_show(res){
    this.data.ward_bed_appoint.push("")
    this.setData({
      ward_bed_appoint:this.data.ward_bed_appoint
    })
  },
  ward_others_hos_show(res){
    this.data.ward_others_hos.push("")
    this.setData({
       ward_others_hos:this.data.ward_others_hos
    })
  },

  //添加更多的删除
  ward_oper_clear(res){
    this.data.ward_oper.splice(res.currentTarget.dataset.index,1)
    this.setData({
      ward_oper:this.data.ward_oper
    })
  },
  ward_bed_appoint_clear(res){
    this.data.ward_bed_appoint.splice(res.currentTarget.dataset.index,1)
    this.setData({
      ward_bed_appoint:this.data.ward_bed_appoint
    })
  },
  ward_others_hos_clear(res){
    this.data.ward_others_hos.splice(res.currentTarget.dataset.index,1)
    this.setData({
       ward_others_hos:this.data.ward_others_hos
    })
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
        //总体情况页面相关功能
    //病人总数——从patient数据库获取病人数量输出到总体情况
    db.collection("patient").where({
      patient_del:false
    }).get().then(res=>{
      this.setData({
        ward_patient_number:res.data.length
      })
    })
    //在院术前评估的血型——从bo数据库获取在院和血型符合的
    db.collection("bo").where({
      bo_bed:"院内",
      bo_blood_type:"A"
    }).get().then(res=>{
      this.setData({
        ward_bef_A:res.data.length
      })
    })
    db.collection("bo").where({
      bo_bed:"院内",
      bo_blood_type:"B"
    }).get().then(res=>{
      this.setData({
        ward_bef_B:res.data.length
      })
    })
    db.collection("bo").where({
      bo_bed:"院内",
      bo_blood_type:"AB"
    }).get().then(res=>{
      this.setData({
        ward_bef_AB:res.data.length
      })
    })
    db.collection("bo").where({
      bo_bed:"院内",
      bo_blood_type:"O"
    }).get().then(res=>{
      this.setData({
        ward_bef_O:res.data.length
      })
    })
    //院外等待手术的血型——从bo数据库获取院外和血型符合的
    db.collection("bo").where({
      bo_bed:"院外",
      bo_wait_oper:"A"
    }).get().then(res=>{
      this.setData({
        ward_wait_A:res.data.length
      })
    })
    db.collection("bo").where({
      bo_bed:"院外",
      bo_wait_oper:"B"
    }).get().then(res=>{
      this.setData({
        ward_wait_B:res.data.length
      })
    })
    db.collection("bo").where({
      bo_bed:"院外",
      bo_wait_oper:"AB"
    }).get().then(res=>{
      this.setData({
        ward_wait_AB:res.data.length
      })
    })
    db.collection("bo").where({
      bo_bed:"院外",
      bo_wait_oper:"O"
    }).get().then(res=>{
      this.setData({
        ward_wait_O:res.data.length
      })
    })
    db.collection("ward").where({
      ward_submit:false
    }).get().then(res=>{
      if(res.data[0].ward_time.getTime()>new Date().getTime()){
        this.setData({
        minDate_ward_time:res.data[0].ward_time.getTime(),
        ward_time:res.data[0].ward_time.getTime(),
        gender_ward_time:"",
        ward_lastid:res.data[0]._id
      })
      }else{
        this.setData({
          minDate_ward_time:res.data[0].ward_time.getTime(),
          ward_time:res.data[0].ward_time.getTime(),
          gender_ward_time:common.getMyData(res.data[0].ward_time.getTime(),'Y-m-d'),
          ward_lastid:res.data[0]._id
        })
      }
    })

    //添加更多——动态添加veiw
    //总体情况页面的添加病人姓名和手术名称
    //var ward_oper=[{"des":"","name":""}]
    var ward_oper=[]
    this.setData({
      ward_oper:ward_oper
    })
    //总体情况页面的拟住院约床和900医院
    var ward_bed_appoint=[]
    var ward_others_hos=[]
    this.setData({
      ward_bed_appoint:ward_bed_appoint,
       ward_others_hos: ward_others_hos
    })


  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})